package com.situ.controller;

import com.situ.bean.Order;
import com.situ.service.impl.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;

@Component

public class OrderCheckTask {

    @Autowired
    private OrderService orderService;

    // 每5分钟执行一次
    @Scheduled(fixedRate = 300000) // 300000 毫秒 = 5 分钟
    public void checkUnpaidOrders() {
        // 获取所有未支付的订单
        List<Order> unpaidOrders = orderService.getUnpaidOrders();

        // 当前时间
        Date now = new Date();

        // 遍历未支付的订单
        for (Order order : unpaidOrders) {
            // 计算订单创建时间与当前时间的差值（毫秒）
            long diff = now.getTime() - order.getAddtime().getTime();
            // 如果超过半小时（30分钟 = 1800000 毫秒）
            if (diff > 1800000) {
                // 将订单状态设为 "已失效"
                order.setState("已失效");
                // 更新订单状态
                orderService.updateorder(order);
                System.out.println("订单 " + order.getCode() + " 已失效");
            }
        }
        System.out.println("订单检查任务执行完毕");
    }
}